package com.tzj.singleton;

import java.lang.reflect.InvocationTargetException;

/**
 * @author 作者 : SODEVE 
 * @author 作者 E-mail: sodeve@yeah.net
 * @date 2015年11月8日 下午2:43:21 
 * @Description: TODO(单例模式Test) 
 */
public class ClientTest {
	public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
		//使用单例模式-懒汉模式
		SingletonLazy sl1 = SingletonLazy.getInstance();
		SingletonLazy sl2 = SingletonLazy.getInstance();
		
		if(sl1.getClass() == sl2.getClass()){
			System.out.println("是同一个对象");
			if(sl1.getClass().getDeclaredMethod("test").invoke(sl1)
					== sl2.getClass().getDeclaredMethod("test").invoke(sl2)){
				System.out.println("是同一个对象的方法");
			}
		}else{
			System.err.println("不是是同一个对象");
		}
		
		
		//使用单例模式-饿汉模式
		SingletonHungry sh1 = SingletonHungry.getInstance();
		SingletonHungry sh2 = SingletonHungry.getInstance();
		
		if(sh1.getClass() == sh2.getClass()){
			System.out.println("是同一个对象");
			if(sh1.getClass().getDeclaredMethod("test").invoke(sh1)
					== sh2.getClass().getDeclaredMethod("test").invoke(sh2)){
				System.out.println("是同一个对象的方法");
			}
		}else{
			System.err.println("不是是同一个对象");
		}
	}

}
